<?php
namespace App\Http\Controllers\Home;

class PayNotifyController extends \WxPayNotify {
    //查询订单
	public function Queryorder($transaction_id)
	{
		$input = new \WxPayOrderQuery();
		$input->SetTransaction_id($transaction_id);
		$result = \WxPayApi::orderQuery($input);
		\Log::DEBUG("查询订单:" . json_encode($result));
		if(array_key_exists("return_code", $result)
			&& array_key_exists("result_code", $result)
			&& $result["return_code"] == "SUCCESS"
			&& $result["result_code"] == "SUCCESS")
		{
			return true;
		}
		return false;
	}
	
	//重写回调处理函数
	public function NotifyProcess($data, &$msg)
	{
		\Log::DEBUG("回调处理开始:" . json_encode($data));
		$notfiyOutput = array();
		
		if(!array_key_exists("transaction_id", $data)){
			$msg = "输入参数不正确";
			return false;
		}
		//查询订单，判断订单真实性
		if(!$this->Queryorder($data["transaction_id"])){
			$msg = "订单查询失败";
			return false;
		}
				\Log::DEBUG("业务流程开始");
                //写自己的业务流程开始
                //更新订单支付状态为支付成功,并将微信订单号写入到对应的订单信息中
                $order = \App\Models\Order::where('order', $data['out_trade_no'])->first();
				if($order->status == 1) {
					\Log::DEBUG("流程已经完毕");
					return true;
				}
                $order->status = 1;
                $order->transaction_id = $data['transaction_id'];
                $order->paytime = $data['time_end'];
                $order->save();
                if(!$order) {
                    $msg = "商户订单更新失败";
                    return false;
                }
		\Log::DEBUG("用户订单更新成功");
                //记录paylog为用户进行分成
                $user = $order->strGetUser();
				\Log::DEBUG("提交订单的用户信息".json_encode($user));
//                if($order->type == 1) {
//					\Log::DEBUG('新入网用户分成流程开始');
//                    //新入网用户分成比例进行分成
//                    $pushmoney = \App\Models\Pushmoney::where('productstatus', 1)->first();
//                    $pushdata['status']     = 1;
//                    $pushdata['offeruid']   = $order->uid;
//                    $pushdata['time']       = time();
//                    $pushdata['orderid']	= $order->id;
//                    //一级代理提成
//                    if (!empty($user->pid)) {
//                        $pushdata['money']      = $pushmoney->pidpush * $order->price;
//                        $pushdata['uid']        = $user->pid;
//                        $pid = \App\Models\Account::create($pushdata);
//                        \Log::DEBUG("pid分成处理成功:" . json_encode($pushdata));
//                        if(!$pid) {
//                            \Log::DEBUG("pid分成处理失败:" . json_encode($pushdata));
//                        }
//                    }
//                    //二级代理提成
//                    if (!empty($user->ppid)) {
//                        $pushdata['uid']		=$user->ppid;
//                        $pushdata['money']      = $pushmoney->ppidpush * $order->price;
//                        $ppid = \App\Models\Account::create($pushdata);
//                        \Log::DEBUG("ppid分成处理成功:" . json_encode($pushdata));
//                        if(!$ppid) {
//                            \Log::DEBUG("ppid分成处理失败:" . json_encode($pushdata));
//			}
//                    }
//                    //代付人提成
//                    if ($data['attach']) {
//                        $pushdata['uid'] = $data['attach'];
//                        $pushdata['money'] = $pushmoney->payagentpush;
//                        $paypush = \App\Models\Account::create($pushdata);
//                        \Log::DEBUG("代付人分成处理成功:" . json_encode($pushdata));
//                        if (!$ppid) {
//                            \Log::DEBUG("代付人分成处理失败:" . json_encode($pushdata));
//                        }
//                    }
//                    \Log::DEBUG('新入网用户分成流程结束');
//                    
//                } elseif($order->type == 2) {
//                    \Log::DEBUG('续费用户分成流程开始');
//                    //续费用户分成比例进行分成
//                    $pushmoney = \App\Models\Pushmoney::where('productstatus', 2)->first();
//                    $pushdata['status']     = 1;
//                    $pushdata['offeruid']   = $order->uid;
//                    $pushdata['time']       = time();
//                    $pushdata['orderid']	= $order->id;
//                    //一级代理提成
//                    if (!empty($user->pid)) {
//                        $pushdata['money']      = $pushmoney->pidpush * $order->price;
//                        $pushdata['uid']        = $user->pid;
//                        $pid = \App\Models\Account::create($pushdata);
//                        \Log::DEBUG("pid分成处理成功:" . json_encode($pushdata));
//                        if(!$pid) {
//                            \Log::DEBUG("pid分成处理失败:" . json_encode($pushdata));
//			}
//                    }
//                    //二级代理提成
//                    if (!empty($user->ppid)) {
//                        $pushdata['uid']		=$user->ppid;
//                        $pushdata['money']      = $pushmoney->ppidpush * $order->price;
//                        $ppid = \App\Models\Account::create($pushdata);
//                        \Log::DEBUG("ppid分成处理成功:" . json_encode($pushdata));
//                        if(!$ppid) {
//                            \Log::DEBUG("ppid分成处理失败:" . json_encode($pushdata));
//			}
//                    }
//                     //代付人提成
//                    if ($data['attach']) {
//                        $pushdata['uid'] = $data['attach'];
//                        $pushdata['money'] = $pushmoney->payagentpush;
//                        $paypush = \App\Models\Account::create($pushdata);
//                        \Log::DEBUG("代付人分成处理成功:" . json_encode($pushdata));
//                        if (!$ppid) {
//                            \Log::DEBUG("代付人分成处理失败:" . json_encode($pushdata));
//                        }
//                    }
//                    \Log::DEBUG('续费用户分成流程结束');
//                }
                //发送短信
                $content = sprintf(config("global.site.msg.content"), $order->name, $order->phone);
                $res = sendSMS(config('global.site.msg.username'), config('global.site.msg.password'), config("global.site.msg.phones"), $content, config("global.site.msg.apikey"));
                $ucontent = sprintf("尊敬的用户：%s， 您购买的 %s 产品,订单号：%s 金额：%s %s【万兆通信】", $order->name, $order->strProduct(), $order->order, $order->orderPrice(), $order->strPayStatus());
                $ures = sendSMS(config('global.site.msg.username'), config('global.site.msg.password'), $order->phone, $ucontent, config("global.site.msg.apikey"));
                \Log::DEBUG("客服信息发送状态".$res);
                \Log::DEBUG("用户信息发送状态".$ures);
                \Log::DEBUG('业务流程结束');
                \Log::DEBUG("流程结束");
                
                //结束
		return true;
	}
}